package com.itfreer.gis.data.server.arcgis;

import java.util.ArrayList;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.locationtech.jts.geom.Geometry;
import org.opengis.feature.simple.SimpleFeature;

import com.itfreer.gis.data.server.GisHttpUtil;
import com.itfreer.gis.data.server.SearchPara;

/**
 * arcgis wms查询
 */
public class ArcgisWMSSearch {
	/**
	 * 空间查询，与当关要素空间叠加关系查询
	 * 
	 * @param url      Arcgis WMS 地图服务地址 地址
	 * @param geometry 空间要素
	 * @param paras    参数
	 * @return
	 */
	public List<SimpleFeature> queryFeature(String url, Geometry geometry, SearchPara paras) throws Exception {
		
		if (url == null || url.equals("")) {
			return null;
		}

//	    if (distance) {
//	     //缓冲单位为。默认为 esriSRUnit_Meter 米
//	     units = units ? units : 'esriSRUnit_Meter';
//	     url += '&distance=' + distance + '&units=' + units;
//	    }
//	   if (where) {
//	    url += '&where=' + where;
//	    }

		// 创建POST请求参数, 必须用NameValuePair
		List<NameValuePair> params = new ArrayList<>();
		// 参数组装
		params.add(new BasicNameValuePair("outFields", "*"));
		params.add(new BasicNameValuePair("geometryType", ArcgisGeometryType.Polygon.toString()));
		params.add(new BasicNameValuePair("spatialRel", ArcgisSpatialRel.Intersects.toString()));
		params.add(new BasicNameValuePair("returnGeometry", "true"));
		params.add(new BasicNameValuePair("geometry", geometry.toString()));
		params.add(new BasicNameValuePair("f", ArcGisConstants.FORMAT));
		
		return GisHttpUtil.post(url + "/0/query", params);
	}

	/**
	 * 空间查询，查询当前地图范围内地要素
	 * 
	 * @param type
	 *            地图类型
	 * @param url
	 *            地址
	 * @param extent
	 *            当前地图范围
	 * @param paras
	 *            参数
	 * @return
	 */
	public List<SimpleFeature> queryFeature(String url, String extent, SearchPara paras) throws Exception {
		return null;
	}

	/**
	 * 属性查询，根据属性条件进行查询
	 * 
	 * @param type
	 *            地图类型
	 * @param url
	 *            地址
	 * @param where
	 *            属性条件
	 * @param extent
	 *            当前地图范围
	 * @param paras
	 *            参数
	 * @return
	 */
	public List<SimpleFeature> queryFeature(String url, String where, String extent, SearchPara paras)
			throws Exception {
		return null;
	}
}
